package com.hzy.fivepalace.common.util;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import jodd.util.StringUtil;

import java.io.Serializable;
import java.util.List;

/**
 * 表格分页数据对象
 *
 * @author gejian
 */
@ApiModel(value = "请求列表返回实体对象")
public class TableDataInfo implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 总记录数
     */
    @ApiModelProperty(value = "总记录数")
    private long total;

    /**
     * 列表数据
     */
    @ApiModelProperty(value = "列表数据")
    private List<?> rows;

    /**
     * 消息状态码
     */
    @ApiModelProperty(value = "状态码")
    private int code;

    /**
     * 消息内容
     */
    @ApiModelProperty(value = "消息内容")
    private String msg;

    @ApiModelProperty(value = "附加参数")
    private Object append;

    /**
     * 表格数据对象
     */
    public TableDataInfo() {
    }

    /**
     * 分页
     *
     * @param list  列表数据
     * @param total 总记录数
     */
    public TableDataInfo(List<?> list, int total) {
        this.rows = list;
        this.total = total;
    }

    public long getTotal() {
        return total;
    }

    public void setTotal(long total) {
        this.total = total;
    }

    public List<?> getRows() {
        return rows;
    }

    public void setRows(List<?> rows) {
        this.rows = rows;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    /**
     * 响应成功请求分页数据
     */
    public static TableDataInfo getDataTable(List<?> list, long total) {
        TableDataInfo rspData = new TableDataInfo();
        rspData.setCode(ResponseUtil.SUCCESS_CODE);
        rspData.setMsg("成功");
        rspData.setRows(list);
        rspData.setTotal(total);
        return rspData;
    }

    public static TableDataInfo getDataTable(List<?> list, long total,Object append) {
        TableDataInfo rspData = new TableDataInfo();
        rspData.setCode(ResponseUtil.SUCCESS_CODE);
        rspData.setMsg("成功");
        rspData.setRows(list);
        rspData.setTotal(total);
        rspData.setAppend(append);
        return rspData;
    }

    /**
     * 响应失败请求分页数据
     */
    public static TableDataInfo errorDataTable(String msg) {
        TableDataInfo rspData = new TableDataInfo();
        rspData.setCode(ResponseUtil.FAIL_CODE);
        rspData.setMsg(StringUtil.isBlank(msg) ? "失败" : msg);
        rspData.setRows(null);
        rspData.setTotal(0);
        return rspData;
    }

    public Object getAppend() {
        return append;
    }

    public void setAppend(Object append) {
        this.append = append;
    }
}
